"""
用户相关接口
"""

from db import db_handler
from lib import common


logger = common.get_logger("user")


# 注册接口
def register_interface(username, password, is_admin=False, balance=0):
    """
    注册接口
    :param username: 用户名 str
    :param password: 密码 str
    :param is_admin: 是否为管理员 bool
    :param balance: 账户余额 int
    :return: 注册结果 bool, str
    """

    # 调用数据处理层，判断用户名是否存在
    if db_handler.select_data(username=username, data=False):
        return False, "\n用户名已存在"

    # 组织用户数据字典
    user_data = {
        "username": username,
        "password": password,
        "balance": balance,
        "shopping_cart": {},
        "records": [],
        "is_admin": is_admin,
        "locked": False,
    }

    # 调用数据处理层，保存用户数据
    db_handler.save_data(user_data)

    msg = f"用户{username}注册成功!"
    logger.info(msg)

    return True, msg


# 登录接口
def login_interface(username, password):
    """
    登录接口
    :param username: 用户名 str
    :param password: 密码 str
    :return: 登录结果 bool, str
    """

    # 调用数据处理层，查询用户数据
    user_data = db_handler.select_data(username=username)

    # 判断用户是否存在
    if not user_data:
        return False, "\n用户不存在", False

    # 判断密码是否正确
    if user_data["password"] != password:
        return False, "\n密码错误", False

    # 判断用户是否被锁定
    if user_data["locked"]:
        return False, "\n用户已被锁定，请联系管理员", False

    msg = f"用户{username}登录成功!"
    logger.info(msg)

    return True, msg, user_data.get("is_admin", False)
